home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-03 / qbpacket.zip / EXPENSE2.BAS < prev    next >
BASIC Source File  |  1991-10-06  |  4KB  |  146 lines

  1. REM-EXPENSE ACCOUNTER (EXPENSE2.BAS)
  2. REM-This program is an expense account.
  3. REM-You can input expenses by category, and display the total.
  4.  
  5. REM-Initialization section
  6. CLS
  7. S = 200
  8. DIM Catgry(1 TO S), Day$(1 TO S), Desc$(1 TO S), Amt(1 TO S)
  9. Maxmenu = 4
  10. DIM Bigname$(Maxmenu), Littlename$(Maxmenu)
  11. Firstpass = 1
  12. Printimage$ = "$$#####,.##"
  13.  
  14. REM-Wait for a menu selection
  15. WHILE N < S
  16.    PRINT
  17.    REM-Show the menu
  18.    PRINT "EXPENSE-ACCOUNTER": PRINT
  19.    PRINT "What category of expense?"
  20.    PRINT 1; "- Food"
  21.    PRINT 2; "- Transportation"
  22.    PRINT 3; "- Lodging"
  23.    PRINT 4; "- Miscellaneous"
  24.    PRINT : PRINT Maxmenu + 1; "to print the total"
  25.    PRINT Maxmenu + 2; "to exit"
  26.  
  27.    REM-Branch to correct subroutine
  28.    INPUT "Input your choice ", N
  29.    ON N GOSUB Food, Transport, Lodging, Misc
  30.    IF N = Maxmenu + 1 THEN GOSUB Totals
  31.    IF N = Maxmenu + 2 THEN GOTO Cleanup
  32.    CLS
  33.    IF N < 1 OR N > Maxmenu + 2 THEN
  34.       PRINT
  35.       PRINT "Choose menu numbers 1 through"; Maxmenu + 2
  36.       PRINT
  37.    END IF
  38. WEND
  39. PRINT "Expense table full.  Your totals will be printed"
  40. GOSUB Waityes
  41. GOSUB Totals
  42. END
  43.  
  44. Food:
  45.    CLS
  46.    Bigname$(N) = "FOOD"
  47.    Littlename$(N) = "food"
  48.    PRINT Bigname$(N)
  49.    GOSUB General  'Call general input subroutine
  50.    RETURN
  51.  
  52. Transport:
  53.    CLS
  54.    Bigname$(N) = "TRANSPORTATION"
  55.    Littlename$(N) = "transportation"
  56.    PRINT Bigname$(N)
  57.    GOSUB General  'Call general input subroutine
  58.    RETURN
  59.  
  60. Lodging:
  61.    CLS
  62.    Bigname$(N) = "LODGING"
  63.    Littlename$(N) = "lodging"
  64.    PRINT Bigname$(N)
  65.    GOSUB General  'Call general input subroutine
  66.    RETURN
  67.  
  68. Misc: REM-Subroutine for miscellaneous expense
  69.    CLS
  70.    Bigname$(N) = "MISCELLANEOUS"
  71.    Littlename$(N) = "miscellaneous"
  72.    PRINT Bigname$(N)
  73.    GOSUB General  'Call general input subroutine
  74.    RETURN
  75.  
  76. General: REM-General input subroutine
  77.    I = I + 1
  78.    Catgry(I) = N
  79.    IF Firstpass = 1 THEN
  80.       REM-Lines to handle date input for first run of program
  81.       INPUT "Input date ", Day$(I)
  82.       D$ = Day$(I)
  83.       Firstpass = 0
  84.    ELSEIF Firstpass = 0 THEN
  85.       REM-Ordinary case; not first run of program
  86.       PRINT "Last date was "; D$
  87.       PRINT "Press Enter to use this date"
  88.       INPUT "or input new date"; Day$(I)
  89.       IF Day$(I) = "" THEN Day$(I) = D$
  90.       D$ = Day$(I)
  91.    END IF
  92.  
  93.    INPUT "Description: ", Desc$(I)
  94.    INPUT "Amount: ", Amt(I)
  95.    RETURN
  96.  
  97. Totals: REM-Subroutine to print totals
  98.    CLS
  99.    FOR N = 1 TO Maxmenu
  100.       IF N = 1 THEN PRINT TAB(20); "EXPENSE REPORT"
  101.       PRINT : PRINT TAB(20); Bigname$(N)
  102.       PRINT
  103.       PRINT "Date:"; TAB(20); "Description"; TAB(45); "Amount"
  104.       PRINT
  105.          FOR J = 1 TO I
  106.             IF Catgry(J) = N THEN
  107.                PRINT Day$(J); TAB(20); Desc$(J); TAB(40);
  108.                PRINT USING Printimage$; Amt(J)
  109.                Subtotal = Subtotal + Amt(J)
  110.                Grandtotal = Grandtotal + Subtotal
  111.             END IF
  112.          NEXT J
  113.       PRINT : PRINT TAB(10); "Expenses for ";
  114.       PRINT Littlename$(N); TAB(40);
  115.       PRINT USING Printimage$; Subtotal
  116.       Subtotal = 0  'Reset subtotal
  117.       GOSUB Waityes  'Call subroutine to wait for answer
  118.    NEXT N
  119.  
  120.    REM-Print grand total
  121.    PRINT : PRINT TAB(10); "GRAND TOTAL:";
  122.    PRINT TAB(40);
  123.    PRINT USING Printimage$; Grandtotal
  124.    PRINT
  125.    WHILE A$ <> "Y" AND A$ <> "y"
  126.       INPUT "Return to menu (y/n)"; A$
  127.    WEND
  128.    RETURN
  129.  
  130. Waityes:
  131.    REM-Subroutine to wait for a "Y" or "y" answer
  132.    PRINT
  133.    WHILE A$ <> "Y" AND A$ <> "y"
  134.       INPUT "Show next (y/n)"; A$
  135.    WEND
  136.    A$ = ""
  137.    RETURN
  138.  
  139. Cleanup:
  140.    REM-Routine to clean up screen and exit
  141.    CLS
  142.    PRINT "Program terminated"
  143.    END
  144.  
  145.  
  146.